Important: kvm security and bug fix update

Synopsis

Important: kvm security and bug fix update

Type/Severity

Security Advisory: Important

Topic

Updated kvm packages that fix multiple security issues and several bugs are
now available for Red Hat Enterprise Linux 5.

This update has been rated as having important security impact by the Red
Hat Security Response Team.

Description

KVM (Kernel-based Virtual Machine) is a full virtualization solution for
Linux on AMD64 and Intel 64 systems. KVM is a Linux kernel module built for
the standard Red Hat Enterprise Linux kernel.

The x86 emulator implementation was missing a check for the Current
Privilege Level (CPL) and I/O Privilege Level (IOPL). A user in a guest
could leverage these flaws to cause a denial of service (guest crash) or
possibly escalate their privileges within that guest. (CVE-2010-0298,
CVE-2010-0306)

A flaw was found in the Programmable Interval Timer (PIT) emulation. Access
to the internal data structure pit_state, which represents the data state
of the emulated PIT, was not properly validated in the pit_ioport_read()
function. A privileged guest user could use this flaw to crash the host.
(CVE-2010-0309)

A flaw was found in the USB passthrough handling code. A specially-crafted
USB packet sent from inside a guest could be used to trigger a buffer
overflow in the usb_host_handle_control() function, which runs under the
QEMU-KVM context on the host. A user in a guest could leverage this flaw to
cause a denial of service (guest hang or crash) or possibly escalate their
privileges within the host. (CVE-2010-0297)

This update also fixes the following bugs:

  • pvclock MSR values were not preserved during remote migration, causing
    time drift for guests. (BZ#537028)
  • SMBIOS table 4 data is now generated for Windows guests. (BZ#545874)
  • if the qemu-kvm "-net user" option was used, unattended Windows XP
    installations did not receive an IP address after reboot. (BZ#546562)
  • when being restored from migration, a race condition caused Windows
    Server 2008 R2 guests to hang during shutdown. (BZ#546563)
  • the kernel symbol checking on the kvm-kmod build process has a safety
    check for ABI changes. (BZ#547293)
  • on hosts without high-res timers, Windows Server 2003 guests experienced
    significant time drift. (BZ#547625)
  • in some situations, installing Windows Server 2008 R2 from an ISO image
    resulted in a blue screen "BAD_POOL_HEADER" stop error. (BZ#548368)
  • a bug in the grow_refcount_table() error handling caused infinite
    recursion in some cases. This caused the qemu-kvm process to hang and
    eventually crash. (BZ#552159)
  • for Windows Server 2003 R2, Service Pack 2, 32-bit guests, an "unhandled
    vm exit" error could occur during reboot on some systems. (BZ#552518)
  • for Windows guests, QEMU could attempt to stop a stopped audio device,
    resulting in a "snd_playback_stop: ASSERT playback_channel->base.active
    failed" error. (BZ#552519)
  • the Hypercall driver did not reset the device on power-down. (BZ#552528)
  • mechanisms have been added to make older savevm versions to be emitted in
    some cases. (BZ#552529)
  • an error in the Makefile prevented users from using the source RPM to
    install KVM. (BZ#552530)
  • guests became unresponsive and could use up to 100% CPU when running
    certain benchmark tests with more than 7 guests running simultaneously.
    (BZ#553249)
  • QEMU could terminate randomly with virtio-net and SMP enabled.
    (BZ#561022)

All KVM users should upgrade to these updated packages, which contain
backported patches to resolve these issues. Note: The procedure in the
Solution section must be performed before this update will take effect.

Solution

Before applying this update, make sure all previously-released errata
relevant to your system have been applied.

This update is available via the Red Hat Network. Details on how to
use the Red Hat Network to apply this update are available at
http://kbase.redhat.com/faq/docs/DOC-11259

The following procedure must be performed before this update will take
effect:

1) Stop all KVM guest virtual machines.

2) Either reboot the hypervisor machine or, as the root user, remove (using
"modprobe -r [module]") and reload (using "modprobe [module]") all of the
following modules which are currently running (determined using "lsmod"):
kvm, ksm, kvm-intel or kvm-amd.

3) Restart the KVM guest virtual machines.

Affected Products

  • Red Hat Enterprise Linux Server 5 x86_64
  • Red Hat Enterprise Linux Server - Extended Update Support 5.4 x86_64
  • Red Hat Enterprise Linux Workstation 5 x86_64

Fixes

  • BZ - 537028 - pvclock msr values are not preserved across remote migration
  • BZ - 545874 - Need to generate SMBIOS table 4 data for windows guests
  • BZ - 546562 - Windows XP unattended install doesn't get an IP address after rebooting, if using -net user
  • BZ - 546563 - Windows Server 2008 R2 shutdown hangs after restore from migration
  • BZ - 547293 - kvm kmod package should filter only some specific ksym dependencies
  • BZ - 547625 - time drift in win2k364 KVM guest
  • BZ - 548368 - BSOD BAD_POOL_HEADER STOP 0x19 during boot of Windows Server 2008 R2 installer
  • BZ - 552159 - qcow2: infinite recursion on grow_refcount_table() error handling
  • BZ - 552518 - Rhev-Block driver causes 'unhandled vm exit' with 32bit win2k3r2sp2 Guest VM on restart
  • BZ - 552519 - KVM : QEMU-Audio attempting to stop unactivated audio device (snd_playback_stop: ASSERT playback_channel->base.active failed).
  • BZ - 552528 - Hypercall driver doesn't reset device on power-down
  • BZ - 552529 - kvm: migration: mechanism to make older savevm versions to be emitted on some cases
  • BZ - 552530 - Build tree for RHEL 5.X and RHEL 5.4.z contains build bugs
  • BZ - 553249 - hypercall device - Vm becomes non responsive on Sysmark benchmark (when more than 7 vm's running simultaneously)
  • BZ - 557025 - CVE-2010-0297 kvm-userspace-rhel5: usb-linux.c: fix buffer overflow
  • BZ - 559091 - CVE-2010-0298 kvm: emulator privilege escalation
  • BZ - 560654 - CVE-2010-0306 kvm: emulator privilege escalation IOPL/CPL level check
  • BZ - 560887 - CVE-2010-0309 kvm: cat /dev/port in guest cause the host hang
  • BZ - 561022 - QEMU terminates without warning with virtio-net and SMP enabled

CVEs

References